from flask import Flask
from config import BaseConfig
from extension.ext_sql import init_app_for_sqlalchemy
from flask_cors import CORS


def init_bp(app:Flask):
    """
    初始化蓝图：将各个模块的蓝图注册到同一个 app 上
    :param app:
    :return:
    """
    # 引入蓝图
    from controller.module import bp as demo_bp

    # 注册蓝图，设置 url 前缀
    app.register_blueprint(demo_bp, url_prefix='/demo')


def init_context_param(app:Flask):
    """
    初始化后端服务的上下文参数
    :param app:
    :return:
    """
    # 注意：此处的 BaseConfig 类可根据不同的开发环境进行更换
    app.config.from_object(BaseConfig())


def create_app():
    """
    创建并初始化一个 Flask APP
    :return: Flask
    """
    app = Flask(__name__)

    # 初始化上下文
    init_context_param(app)

    # 初始化 sqlalchemy
    init_app_for_sqlalchemy(app)

    # 初始化 blueprint
    init_bp(app)

    return app

# 创建 app
app = create_app()

# 放行所有url
CORS(app, resources=r'/*/*')


if __name__ == '__main__':

    app.run(debug=True)

